package admin

import (
	"e_mall_server/models"
	"e_mall_server/service"
	"github.com/gin-gonic/gin"
	"go.uber.org/zap"
	"strconv"
)

/**
 * @Author: zhaobin
 * @Description TODO
 * @Date: 2022-05-09 11:45
 */

// GetGoodsCateList 获取商品分类列表接口
func GetGoodsCateList(c *gin.Context) {
	GoodsCateList, err := service.GetGoodsCateList(map[string]interface{}{"parent_id": 0})
	if err != nil {
		zap.L().Error("service.GetGoodsCateList() failed", zap.Error(err))
		ResponseError(c, "查询商品分类列表失败")
		return
	}
	ResponseSuccess(c, GoodsCateList)
}

// AddGoodsCate 添加商品分类信息接口
func AddGoodsCate(c *gin.Context) {
	goodsCate := models.GoodsCate{}
	if err := c.ShouldBind(&goodsCate); err != nil {
		zap.L().Error("AddGoodsCate with invalid param", zap.Error(err))
		ResponseError(c, "请求参数错误")
		return
	}

	// 业务逻辑处理
	if err := service.AddGoodsCate(&goodsCate); err != nil {
		zap.L().Error("service.AddGoodsCate(&GoodsCate) failed", zap.Error(err))
		ResponseError(c, "增加商品分类失败 请重试")
		return
	}

	// 创建成功返回响应
	ResponseSuccess(c, nil)

}

// UpdateGoodsCate 修改商品分类信息接口
func UpdateGoodsCate(c *gin.Context) {
	goodsCate := models.GoodsCate{}
	if err := c.ShouldBind(&goodsCate); err != nil {
		zap.L().Error("UpdateGoodsCate with invalid param", zap.Error(err))
		ResponseError(c, "请求参数错误")
		return
	}
	zap.L().Debug("GoodsCate数据", zap.Any("value", goodsCate))
	// 业务逻辑处理
	if count := service.UpdateGoodsCate(&goodsCate); count > 0 {
		// 创建成功返回响应
		ResponseSuccess(c, nil)
		return
	}
	ResponseError(c, "修改商品分类失败 请重试")
}

// DeleteGoodsCate 删除商品分类接口
func DeleteGoodsCate(c *gin.Context) {
	id, err := strconv.ParseInt(c.Param("id"), 10, 64)
	if err != nil {
		zap.L().Error("DeleteGoodsCate with invalid param", zap.Error(err))
		ResponseError(c, "传入参数错误")
		return
	}
	count, err := service.DeleteGoodsCateById(id)
	if count > 0 {
		ResponseSuccess(c, nil)
		return
	}
	ResponseError(c, err.Error())
}

// GetGoodsCateDetailById 通过id查询商品分类信息
func GetGoodsCateDetailById(c *gin.Context) {
	idStr := c.Param("id")
	id, err := strconv.ParseInt(idStr, 10, 64)
	if err != nil {
		zap.L().Error("GetGoodsCateDetailById with invalid param", zap.Error(err))
		ResponseError(c, "请求参数错误")
	}
	GoodsCate, err := service.GetGoodsCateDetailById(id)
	if err != nil {
		zap.L().Error("service.GetGoodsCateDetailById(id) failed", zap.Error(err))
		ResponseError(c, "获取管理员信息错误")
		return
	}
	ResponseSuccess(c, GoodsCate)
}
